package com.tuars.instalacionesalberti.vistas.articulos;

import java.awt.Color;

import javax.swing.*;

import com.tuars.instalacionesalberti.connection.bd.ConnectionBaseDades;
import com.tuars.instalacionesalberti.controllers.articles.InsertarArticulos;
import com.tuars.instalacionesalberti.controllers.familia.ObtenerFamilias;
import com.tuars.instalacionesalberti.controllers.marca.ObtenerMarcas;
import com.tuars.instalacionesalberti.entidades.Articles;

import java.awt.Font;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.SQLException;

@SuppressWarnings("serial")
public class VistaInsertArticulos extends JPanel{
	private JTextField textFieldCodArt;
	private JTextField textFieldPCost;
	private JTextField textFieldPVenta;
	private JTextArea txtDescricpcinDelArticulo;
	
	@SuppressWarnings("rawtypes")
	private JList  listMarca;
	@SuppressWarnings("rawtypes")
	private JList  listFamilia;
	
	private InsertarArticulos controllerArtic;
	private Articles entidadArticle;
	private ConnectionBaseDades conexion;
	private ObtenerFamilias obtenFamilias;
	private ObtenerMarcas obtenerMarcas;
	
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public VistaInsertArticulos() throws SQLException{
		setVisible(false);
		setSize(964, 519);
		setBackground(new Color(70, 130, 180));
		setLayout(null);
		
		/**
		 * Codi Article
		 */
		JLabel lblCodigoArticulo = new JLabel("Codigo Articulo*:");
		lblCodigoArticulo.setBounds(12, 30, 128, 14);
		add(lblCodigoArticulo);
		
		textFieldCodArt = new JTextField();
		textFieldCodArt.setBounds(150, 27, 120, 20);
		add(textFieldCodArt);
		textFieldCodArt.setColumns(10);
		
		/**
		 * Preu cost
		 */
		JLabel lblPreuCost = new JLabel("Preu cost:");
		lblPreuCost.setBounds(40, 61, 100, 14);
		add(lblPreuCost);
		
		textFieldPCost = new JTextField();
		textFieldPCost.setBounds(150, 58, 120, 20);
		add(textFieldPCost);
		textFieldPCost.setColumns(10);
		
		/**
		 * Preu venta
		 */
		JLabel lblPreuVenta = new JLabel("Preu venta:");
		lblPreuVenta.setBounds(40, 92, 100, 14);
		add(lblPreuVenta);
		
		textFieldPVenta = new JTextField();
		textFieldPVenta.setBounds(150, 89, 120, 20);
		add(textFieldPVenta);
		textFieldPVenta.setColumns(10);
		
		/**
		 * Descripcion
		 */
		JLabel lblDescripcin = new JLabel("Descripci\u00F3n:");
		lblDescripcin.setBounds(40, 117, 100, 14);
		add(lblDescripcin);
		
		txtDescricpcinDelArticulo = new JTextArea();
		txtDescricpcinDelArticulo.setFont(new Font("Arial", Font.PLAIN, 12));
		txtDescricpcinDelArticulo.setBounds(150, 120, 225, 272);
		add(txtDescricpcinDelArticulo);
		txtDescricpcinDelArticulo.setColumns(10);
		txtDescricpcinDelArticulo.setLineWrap(true);
		// Barra de desplazamiento
		JScrollPane barraDescripcion = new JScrollPane(txtDescricpcinDelArticulo);
		barraDescripcion.setBounds(150, 120, 225, 272);
		add(barraDescripcion);
		
		/**
		 * Marca
		 */
		JLabel lblMarca = new JLabel("Marca*:");
		lblMarca.setBounds(390, 30, 100, 14);
		add(lblMarca);
		/**
		 * JList Marca
		 */
		//Elementos que contendra la lista
		obtenerMarcas = new ObtenerMarcas();
		
		listMarca = new JList(obtenerMarcas.llenarLista().toArray());
		listMarca.setBounds(507, 29, 300, 200);

		// Orientacion de presentacion i el ajuste
		listMarca.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
		//Barra de desplazamiento
		JScrollPane barraDesplazamiento = new JScrollPane(listMarca);
		barraDesplazamiento.setBounds(500, 28, 200, 110);
		//Agregar la barra de desplazamiento al panel
		add(barraDesplazamiento);
		
		
		
		
		
		/**
		 * Familia
		 */
		JLabel lblFamilia = new JLabel("Familia*:");
		lblFamilia.setBounds(385, 146, 105, 14);
		add(lblFamilia);
		/**
		 * JList Familia
		 */
		//Elementos que contendra la lista
		obtenFamilias = new ObtenerFamilias();
		listFamilia = new JList(obtenFamilias.llenarLista().toArray());
		listFamilia.setBounds(500, 148, 200, 110);

		// Orientacion de presentacion i el ajuste
		listFamilia.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
		//Barra de desplazamiento
		JScrollPane barraDesplazamientoFam = new JScrollPane(listFamilia);
		barraDesplazamientoFam.setBounds(500, 148, 200, 110);
		//Agregar la barra de desplazamiento al panel
		add(barraDesplazamientoFam);
		
		/**
		 * Botones aceptar y borrar
		 */
		JButton btnAceptar = new JButton("Aceptar");
		btnAceptar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
						try {
							entidadArticle = new Articles();
							conexion = new ConnectionBaseDades();
							controllerArtic = new InsertarArticulos();
							
							controllerArtic.AssignarValoresAEntidad(entidadArticle, textFieldCodArt.getText(), txtDescricpcinDelArticulo.getText(), Integer.parseInt(textFieldPCost.getText()), Integer.parseInt(textFieldPVenta.getText()), (String)listFamilia.getSelectedValue(), (String)listMarca.getSelectedValue());
							
							controllerArtic.introduir(conexion.Conexion(), entidadArticle);
							conexion.Conexion().close();

						} catch (NumberFormatException | SQLException e) {
							e.printStackTrace();
						}
						//TODO crear un condicional per comprobar que s'han introduit les dades y missatge mentre s'ha introduit
						

						textFieldCodArt.setText(null);
						textFieldPCost.setText(null);
						textFieldPVenta.setText(null);
						txtDescricpcinDelArticulo.setText(null);
						listFamilia.clearSelection();
						listMarca.clearSelection();
						
			}
		});
		btnAceptar.setBounds(778, 387, 89, 23);
		add(btnAceptar);
		
		JButton btnBorrar = new JButton("Borrar");
		btnBorrar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				textFieldCodArt.setText(null);
				textFieldPCost.setText(null);
				textFieldPVenta.setText(null);
				txtDescricpcinDelArticulo.setText(null);
				listFamilia.clearSelection();
				listMarca.clearSelection();
				
			}
		});
		btnBorrar.setBounds(679, 387, 89, 23);
		add(btnBorrar);
		
	}
	
}
